package utils

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"strings"
	"time"

	"myproject/model"
)

//获取token
func getToken() string {
	var host = "http://127.0.0.1:5000/slogin"
	var param = map[string]string{
		"client_id":     "4536cd22533911ed80eff0189849c34d",
		"client_secret": "4536ced0533911ed80eff0189849c34d",
	}

	uri, err := url.Parse(host)
	if err != nil {
		fmt.Println(err)
	}
	query := uri.Query()
	for k, v := range param {
		query.Set(k, v)
	}
	uri.RawQuery = query.Encode()

	response, err := http.Get(uri.String())
	if err != nil {
		fmt.Println(err)
	}
	result, err := ioutil.ReadAll(response.Body)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(result))
	var v interface{}
	json.Unmarshal([]byte(string(result)), &v)
	resultmes := v.(map[string]interface{})

	mes := resultmes["token"].(string)

	return mes
}

//调用银行存管平台
func getBank(openbank model.OpenBank) {
	token := getToken()
	var host = "http://127.0.0.1:5000/openbank"
	var accessToken = token

	uri, err := url.Parse(host)
	if err != nil {
		fmt.Println(err)
	}
	query := uri.Query()
	query.Set("token", accessToken)
	uri.RawQuery = query.Encode()

	sendBody := http.Request{}
	sendBody.ParseForm()
	sendBody.Form.Add("name", openbank.Name)
	sendBody.Form.Add("cardNumber", openbank.CardNumber)
	sendBody.Form.Add("ordercode", "23")
	sendBody.Form.Add("callbackurl", "http://localhost:8000/openCallback")
	//添加回调地址
	sendData := sendBody.Form.Encode()

	client := &http.Client{}
	request, err := http.NewRequest("POST", uri.String(), strings.NewReader(sendData))
	if err != nil {
		fmt.Println(err)
	}
	request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	request.Header.Set("token", accessToken)

	response, _ := client.Do(request)
	defer response.Body.Close()
	result, err := ioutil.ReadAll(response.Body)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(result))
}

// func task(id){
// 	len := r.ListLen("openuser1")
// 	// fmt.Println(len)
// 	if len > 0 {
// 		//从队列中取一个信息l.ListRange(key,start,end)
// 		auditid := r.ListPop("openuser1")
// 		//加入客服审核队列
// 		//websocket

// }
//发布开户信息到银行存管平台
func SendOpenMes() {
	//查询客服
	// for i:=0;i<{
	// 	go task(i.ID)
	// }
	// for {
	// 	//一直在执行的任务
	// 	//从redis中读取任务
	// 	if conn, ok := Scoketmap["1"]; ok {
	// 		fmt.Println(conn)
	// 		conn.WriteMessage(1, []byte("234"))
	// 	} else {
	// 		fmt.Println("Key Not Found*****")
	// 	}
	// 	time.Sleep(time.Second * 1)
	// }

	//发送消息给客户端

	// r := RedisPool
	// db := model.DB
	// for {
	// 	//获取长度，判断队列中是否有信息
	// 	len := r.ListLen("openuser1")
	// 	// fmt.Println(len)
	// 	if len > 0 {
	// 		//从队列中取一个信息l.ListRange(key,start,end)
	// 		openid := r.ListPop("openuser1")
	// 		//查询信息
	// 		var openbank model.OpenBank
	// 		db.First(&openbank, "id=?", openid)
	// 		//调用银行存管平台接口
	// 		getBank(openbank)

	// 	}
	time.Sleep(time.Second * 1)
	// }
}
